home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / AttributeGroup.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  9.5 KB  |  428 lines

  1. package com.extensibility.xml;
  2.  
  3. import com.extensibility.util.Debug;
  4. import com.extensibility.util.FilteredEnumerator;
  5. import com.extensibility.util.XASet;
  6. import java.util.Enumeration;
  7. import java.util.Vector;
  8. import javax.swing.event.ChangeEvent;
  9. import javax.swing.event.ChangeListener;
  10. import javax.swing.event.EventListenerList;
  11.  
  12. public class AttributeGroup implements Cloneable, AttributeGroupMember {
  13.    private static final String PADDING = "                                                                                                                              ";
  14.    private static final String COL_PAD = " ";
  15.    private static final int TYPE_COL_WIDTH = 10;
  16.    private static final int DECL_COL_WIDTH = 11;
  17.    Vector attributes;
  18.    AttributeDeclaration.Owner owner;
  19.    EventListenerList listenerList;
  20.    DeclarationChangeEvent declChangeEvent;
  21.  
  22.    public AttributeGroup(AttributeDeclaration.Owner var1) {
  23.       this.attributes = new Vector();
  24.       this.listenerList = new EventListenerList();
  25.       this.declChangeEvent = new DeclarationChangeEvent(this);
  26.       this.owner = var1;
  27.    }
  28.  
  29.    AttributeGroup(AttributeDeclaration.Owner var1, Vector var2) {
  30.       this(var1);
  31.       this.updateContents(var2);
  32.    }
  33.  
  34.    public String getName() {
  35.       return this.owner.getName();
  36.    }
  37.  
  38.    public boolean contains(AttributeGroup var1) {
  39.       return var1 == null ? false : this.attributes.indexOf(var1) >= 0;
  40.    }
  41.  
  42.    Vector getUsesList(Vector var1) {
  43.       if (var1 == null) {
  44.          var1 = new Vector();
  45.       }
  46.  
  47.       for(int var2 = 0; var2 < this.attributes.size(); ++var2) {
  48.          AttributeGroupMember var3 = (AttributeGroupMember)this.attributes.elementAt(var2);
  49.          if (var3 instanceof AttributeGroup) {
  50.             ((AttributeGroup)var3).getUsesList(var1);
  51.             if (var3.getOwner() instanceof BaseDeclaration) {
  52.                var1.addElement(var3.getOwner());
  53.             }
  54.          }
  55.       }
  56.  
  57.       return var1;
  58.    }
  59.  
  60.    public Enumeration getMetaProps() {
  61.       XASet var1 = new XASet();
  62.       Enumeration var2 = this.getAttributes(true);
  63.  
  64.       while(var2.hasMoreElements()) {
  65.          AttributeDeclaration var3 = (AttributeDeclaration)var2.nextElement();
  66.          Enumeration var4 = ((BaseDeclaration)var3).getMetaProps();
  67.  
  68.          while(var4 != null && var4.hasMoreElements()) {
  69.             String var5 = (String)var4.nextElement();
  70.             var1.addToSet(var5);
  71.          }
  72.       }
  73.  
  74.       return ((Vector)var1).elements();
  75.    }
  76.  
  77.    public String getMetaProps(String var1) {
  78.       boolean var2 = true;
  79.       StringBuffer var3 = new StringBuffer();
  80.       Enumeration var4 = this.getAttributes(true);
  81.  
  82.       while(var4.hasMoreElements()) {
  83.          AttributeDeclaration var5 = (AttributeDeclaration)var4.nextElement();
  84.          if (!var5.isQualified()) {
  85.             String var6 = (String)((BaseDeclaration)var5).getMetaProp(var1);
  86.             if (var6 != null) {
  87.                if (!var2) {
  88.                   var3.append(" ");
  89.                } else {
  90.                   var2 = false;
  91.                }
  92.  
  93.                var3.append(((BaseDeclaration)var5).getName());
  94.                var3.append(" ");
  95.                var3.append(var6);
  96.             }
  97.          }
  98.       }
  99.  
  100.       return var3.toString();
  101.    }
  102.  
  103.    void replace(AttributeGroupMember var1, AttributeGroupMember var2) {
  104.       int var3 = this.attributes.indexOf(var1);
  105.       this.attributes.setElementAt(var2, var3);
  106.    }
  107.  
  108.    boolean replace(AttributeDeclaration.Owner var1, AttributeGroup var2) {
  109.       boolean var3 = false;
  110.  
  111.       for(int var4 = 0; var4 < this.attributes.size(); ++var4) {
  112.          AttributeGroupMember var5 = (AttributeGroupMember)this.attributes.elementAt(var4);
  113.          if (var5.getOwner() == var1) {
  114.             this.attributes.setElementAt(var2, var4);
  115.             var3 = true;
  116.          } else if (var5 instanceof AttributeGroup) {
  117.             ((AttributeGroup)var5).replace(var1, var2);
  118.          }
  119.       }
  120.  
  121.       return var3;
  122.    }
  123.  
  124.    public AttributeDeclaration.Owner getOwner() {
  125.       return this.owner;
  126.    }
  127.  
  128.    public int getMemberCount() {
  129.       return this.attributes.size();
  130.    }
  131.  
  132.    public void setOwner(AttributeDeclaration.Owner var1) {
  133.       this.owner = var1;
  134.       FilteredEnumerator var2 = new FilteredEnumerator(this.getAttributes(false), Class.forName("com.extensibility.xml.AttributeDeclaration"));
  135.  
  136.       while(var2.hasMoreElements()) {
  137.          ((AttributeDeclaration)var2.nextElement()).setOwner(var1);
  138.       }
  139.  
  140.    }
  141.  
  142.    public Object clone(AttributeDeclaration.Owner var1, SchemaIntf var2, SchemaIntf var3) {
  143.       AttributeGroup var4 = null;
  144.  
  145.       try {
  146.          var4 = (AttributeGroup)super.clone();
  147.          var4.attributes = new Vector();
  148.          var4.owner = var1;
  149.          Enumeration var5 = this.attributes.elements();
  150.  
  151.          for(int var13 = 0; var13 < this.attributes.size(); ++var13) {
  152.             AttributeGroup var7 = null;
  153.             Object var8 = this.attributes.elementAt(var13);
  154.             String var9 = ((AttributeGroupMember)var8).getOwner().getName();
  155.             if (!(var8 instanceof AttributeDeclaration)) {
  156.                if (var8 instanceof AttributeGroup) {
  157.                   InternalPEDeclaration var10 = (InternalPEDeclaration)var3.getNamedDeclaration(var9, Class.forName("com.extensibility.xml.InternalPEDeclaration"));
  158.                   var7 = var10.getAttributeGroup();
  159.                } else {
  160.                   Debug.assert(false, "unexpected contents of attributes");
  161.                }
  162.             }
  163.  
  164.             if (var7 != null) {
  165.                var4.add(var7);
  166.             }
  167.          }
  168.  
  169.          return var4;
  170.       } catch (CloneNotSupportedException var11) {
  171.          Debug.assert(false, "Problem cloning AttributeGroup.");
  172.          Object var6 = null;
  173.          return var6;
  174.       }
  175.    }
  176.  
  177.    public Object clone(AttributeDeclaration.Owner var1) {
  178.       AttributeGroup var2 = null;
  179.  
  180.       try {
  181.          var2 = (AttributeGroup)super.clone();
  182.          var2.attributes = new Vector();
  183.          var2.owner = var1;
  184.          Enumeration var3 = this.attributes.elements();
  185.  
  186.          for(Object var8 = null; var3.hasMoreElements(); var2.add((AttributeGroupMember)var8)) {
  187.             Object var5 = var3.nextElement();
  188.             if (var5 instanceof AttributeDeclaration) {
  189.                var8 = ((AttributeDeclaration)var5).clone(var1);
  190.             } else if (var5 instanceof AttributeGroup) {
  191.                var8 = (AttributeGroup)var5;
  192.             } else {
  193.                Debug.assert(false, "unexpected contents of attributes");
  194.             }
  195.          }
  196.  
  197.          return var2;
  198.       } catch (CloneNotSupportedException var6) {
  199.          Debug.assert(false, "Problem cloning AttributeGroup.");
  200.          Object var4 = null;
  201.          return var4;
  202.       }
  203.    }
  204.  
  205.    public boolean add(AttributeGroupMember var1) {
  206.       if (this.attributes.indexOf(var1) < 0) {
  207.          this.attributes.addElement(var1);
  208.          return true;
  209.       } else {
  210.          return false;
  211.       }
  212.    }
  213.  
  214.    public void remove(AttributeGroupMember var1) {
  215.       if (!this.attributes.removeElement(var1)) {
  216.          throw new IllegalArgumentException();
  217.       }
  218.    }
  219.  
  220.    void removeAll() {
  221.       this.attributes.removeAllElements();
  222.    }
  223.  
  224.    public Vector getMembers() {
  225.       return (Vector)this.attributes.clone();
  226.    }
  227.  
  228.    public Enumeration getAttributes(boolean var1) {
  229.       return (Enumeration)(!var1 ? this.attributes.elements() : new 1(this));
  230.    }
  231.  
  232.    public void setURI(URI var1) {
  233.    }
  234.  
  235.    public Vector updateContents(Vector var1, AttributeDeclaration.Owner var2) {
  236.       Enumeration var3 = var1.elements();
  237.  
  238.       while(var3.hasMoreElements()) {
  239.          Object var4 = var3.nextElement();
  240.          ((AttributeGroupMember)var4).setOwner(var2);
  241.       }
  242.  
  243.       return this.updateContents(var1);
  244.    }
  245.  
  246.    public Vector updateContents(Vector var1) {
  247.       Vector var2 = new Vector();
  248.  
  249.       for(int var3 = this.attributes.size() - 1; var3 >= 0; --var3) {
  250.          if (var1.indexOf(this.attributes.elementAt(var3)) < 0) {
  251.             var2.addElement(this.attributes.elementAt(var3));
  252.             this.remove((AttributeGroupMember)this.attributes.elementAt(var3));
  253.          }
  254.       }
  255.  
  256.       for(int var4 = var1.size() - 1; var4 >= 0; --var4) {
  257.          if (this.attributes.indexOf(var1.elementAt(var4)) < 0) {
  258.             this.add((AttributeGroupMember)var1.elementAt(var4));
  259.          }
  260.       }
  261.  
  262.       return var2;
  263.    }
  264.  
  265.    public AttributeDeclaration getAttribute(String var1) {
  266.       Enumeration var2 = this.getAttributes(true);
  267.  
  268.       while(var2.hasMoreElements()) {
  269.          AttributeDeclaration var3 = (AttributeDeclaration)var2.nextElement();
  270.          if (((BaseDeclaration)var3).getName().equals(var1)) {
  271.             return var3;
  272.          }
  273.       }
  274.  
  275.       return null;
  276.    }
  277.  
  278.    public AttributeGroupMember getAttributeOrGroup(String var1) {
  279.       Enumeration var2 = this.getAttributes(false);
  280.  
  281.       while(var2.hasMoreElements()) {
  282.          AttributeGroupMember var3 = (AttributeGroupMember)var2.nextElement();
  283.          if (var3.getName().equals(var1)) {
  284.             return var3;
  285.          }
  286.       }
  287.  
  288.       return null;
  289.    }
  290.  
  291.    public String getAttributesAsString(boolean var1) {
  292.       Enumeration var2 = this.getAttributes(var1);
  293.       StringBuffer var3 = new StringBuffer();
  294.  
  295.       Object var5;
  296.       for(String var4 = ", "; var2.hasMoreElements(); var3.append(String.valueOf(this.getMemberName((AttributeGroupMember)var5)).concat(String.valueOf(var4)))) {
  297.          var5 = var2.nextElement();
  298.          if (!var2.hasMoreElements()) {
  299.             var4 = "";
  300.          }
  301.       }
  302.  
  303.       return var3.toString();
  304.    }
  305.  
  306.    private String getMemberName(AttributeGroupMember var1) {
  307.       String var2 = var1.getName();
  308.       if (var1 instanceof AttributeGroup && var1.getOwner() instanceof InternalPEDeclaration) {
  309.          var2 = String.valueOf('%').concat(String.valueOf(var2));
  310.       }
  311.  
  312.       return var2;
  313.    }
  314.  
  315.    public String getSource() {
  316.       return this.getSource(0);
  317.    }
  318.  
  319.    public boolean hasComments() {
  320.       Enumeration var1 = this.getAttributes(false);
  321.  
  322.       while(var1.hasMoreElements()) {
  323.          AttributeGroupMember var2 = (AttributeGroupMember)var1.nextElement();
  324.          if (var2 instanceof AttributeDeclaration) {
  325.             AttributeDeclaration var3 = (AttributeDeclaration)var2;
  326.             if (((BaseDeclaration)var3).hasComments()) {
  327.                return true;
  328.             }
  329.          }
  330.       }
  331.  
  332.       return false;
  333.    }
  334.  
  335.    public String getSource(boolean var1) {
  336.       if (var1) {
  337.          if (this.attributes.size() == 0) {
  338.             return "";
  339.          } else {
  340.             String var2 = String.valueOf("<!ATTLIST ").concat(String.valueOf(this.getOwner().getName()));
  341.             return String.valueOf(String.valueOf(String.valueOf(var2).concat(String.valueOf(" "))).concat(String.valueOf(this.getSource(var2.length())))).concat(String.valueOf(" >"));
  342.          }
  343.       } else {
  344.          return this.getSource(0);
  345.       }
  346.    }
  347.  
  348.    public String getSource(int var1) {
  349.       boolean var2 = var1 == 0;
  350.       String var3 = var2 ? String.valueOf("<!ATTLIST ").concat(String.valueOf(this.getOwner().getName())) : String.valueOf("                                                                                                                              ".substring(0, var1)).concat(String.valueOf(" "));
  351.       StringBuffer var4 = new StringBuffer();
  352.       String var5 = this.getOwner().getName();
  353.       int var6 = 0;
  354.       int var7 = 0;
  355.  
  356.       AttributeGroupMember var9;
  357.       for(Enumeration var8 = this.getAttributes(false); var8.hasMoreElements(); var7 = Math.max(var7, var9 instanceof AttributeDeclaration ? ((AttributeDeclaration)var9).getTypeAsPrimitiveSource().length() : 0)) {
  358.          var9 = (AttributeGroupMember)var8.nextElement();
  359.          var6 = Math.max(var6, var9.getName().length());
  360.       }
  361.  
  362.       String var16 = "                                                                                                                              ".substring(0, var3.length() + var6 + " ".length() * 3);
  363.       String var10 = "                                                                                                                              ".substring(0, var3.length() + var6 + var7 + " ".length() * 3);
  364.       boolean var11 = true;
  365.       Enumeration var12 = this.getAttributes(false);
  366.  
  367.       while(var12.hasMoreElements()) {
  368.          AttributeGroupMember var13 = (AttributeGroupMember)var12.nextElement();
  369.          if (var2 && var13 instanceof AttributeDeclaration) {
  370.             var4.append(System.getProperty("line.separator"));
  371.             var4.append(((BaseDeclaration)var13).getCommentsAsSource());
  372.          }
  373.  
  374.          if (var11 && !var2) {
  375.             var11 = false;
  376.          } else {
  377.             var4.append(var3);
  378.          }
  379.  
  380.          if (var13 instanceof AttributeDeclaration) {
  381.             var4.append(String.valueOf(" ").concat(String.valueOf(var13.getName())));
  382.             AttributeDeclaration var14 = (AttributeDeclaration)var13;
  383.             var4.append("                                                                                                                              ".substring(0, var6 - var13.getName().length()));
  384.             String var15 = var14.getTypeAsPrimitiveSource();
  385.             if (!var14.isEnumeration()) {
  386.                var4.append(String.valueOf(" ").concat(String.valueOf(var15)));
  387.                var4.append("                                                                                                                              ".substring(0, var7 - var15.length()));
  388.             }
  389.  
  390.             var4.append(String.valueOf(" ").concat(String.valueOf(var14.getChoicesSource(var16))));
  391.             var4.append(String.valueOf(" ").concat(String.valueOf(var14.getDefaultSource((char)(var2 ? '"' : '\''), var10))));
  392.          } else {
  393.             Debug.assert(var13 instanceof AttributeGroup, "unexpected entry in vector");
  394.             var4.append(String.valueOf(String.valueOf(" %").concat(String.valueOf(var13.getName()))).concat(String.valueOf(";")));
  395.          }
  396.  
  397.          if (var2) {
  398.             var4.append(">");
  399.          }
  400.  
  401.          if (var2 || var12.hasMoreElements()) {
  402.             var4.append(System.getProperty("line.separator"));
  403.          }
  404.       }
  405.  
  406.       return var4.toString();
  407.    }
  408.  
  409.    public void addChangeListener(ChangeListener var1) {
  410.       this.listenerList.add(Class.forName("javax.swing.event.ChangeListener"), var1);
  411.    }
  412.  
  413.    public void removeChangeListener(ChangeListener var1) {
  414.       this.listenerList.remove(Class.forName("javax.swing.event.ChangeListener"), var1);
  415.    }
  416.  
  417.    public void fireChangeEvent(ChangeEvent var1) {
  418.       Object[] var2 = this.listenerList.getListenerList();
  419.  
  420.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  421.          if (var2[var3] == Class.forName("javax.swing.event.ChangeListener")) {
  422.             ((ChangeListener)var2[var3 + 1]).stateChanged(var1);
  423.          }
  424.       }
  425.  
  426.    }
  427. }
  428.